package com.ruoyi.order.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.order.domain.Coupon;
import com.ruoyi.order.mapper.CouponMapper;
import com.ruoyi.order.mapper.UserCouponMapper;
import com.ruoyi.order.service.ICouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 优惠券管理Service业务层处理
 *
 * @author jsj
 * @date 2024-03-27
 */
@Service
public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements ICouponService {
    @Autowired
    private CouponMapper couponMapper;

    @Autowired
    private UserCouponMapper userCouponMapper;


    /**
     * 查询优惠券管理
     *
     * @param id 优惠券管理主键
     * @return 优惠券管理
     */
    @Override
    public Coupon selectCouponById(Long id) {
        return couponMapper.selectCouponById(id);
    }

    /**
     * 查询优惠券管理列表
     *
     * @param coupon 优惠券管理
     * @return 优惠券管理
     */
    @Override
    public List<Coupon> selectCouponList(Coupon coupon) {
        return couponMapper.selectCouponList(coupon);
    }

    /**
     * 新增优惠券管理
     *
     * @param coupon 优惠券管理
     * @return 结果
     */
    @Override
    public AjaxResult insertCoupon(Coupon coupon) {
        System.out.println("111111111111");
        System.out.println(coupon);
        //判断抢购或使用时间在结束时间之前
        boolean before = coupon.getStart().isBefore(coupon.getEnd());
        System.out.println(before + "11111111111");
        boolean before1 = coupon.getExpirationStart().isBefore(coupon.getExpirationEnd());
        System.out.println(before1 + "222222222");

        if (!before || !before1) {
            return AjaxResult.error("开始时间需要在结束时间之前");
        }

        //判断优惠劵使用开始时间在商家活动发时间之后

        if (!coupon.getStart().isBefore(coupon.getExpirationStart())) {
            return AjaxResult.error("商家活动开始时间需要在活动开始时间之前");
        }


        //判断新增的是什么优惠劵：满减卷还是折扣卷
        if (coupon.getType() == null) {
            return AjaxResult.error("活动类型不能为空");
        }

        String type = coupon.getType();
        if (type.equals("1")) { //满减卷
            coupon.setDiscount(null);
            //判断
        } else if (type.equals("2")) { //折扣卷
            coupon.setPreferentialMoney(null);
            Long discount = coupon.getDiscount();
            boolean b = discount > 0 && discount < 1;
            if (!b) {
                return AjaxResult.error("折扣卷的折扣率应在0-1之间");

            }
        }

        System.out.println("22222222222222");
        System.out.println(coupon);

        int i = couponMapper.insertCoupon(coupon);
        if (i < 0) {
            return AjaxResult.error("新增失败");
        }
        return AjaxResult.success("新增成功");
    }

    /**
     * 修改优惠券管理
     *
     * @param coupon 优惠券管理
     * @return 结果
     */
    @Override
    public int updateCoupon(Coupon coupon) {
        return couponMapper.updateCoupon(coupon);
    }

    /**
     * 批量删除优惠券管理
     *
     * @param ids 需要删除的优惠券管理主键
     * @return 结果
     */
    @Override
    public int deleteCouponByIds(Long[] ids) {
        return couponMapper.deleteCouponByIds(ids);
    }

    /**
     * 删除优惠券管理信息
     *
     * @param id 优惠券管理主键
     * @return 结果
     */
    @Override
    public int deleteCouponById(Long id) {
        return couponMapper.deleteCouponById(id);
    }


}
